//
//  main.m
//  base_m_12_block
//
//  Created by China Dragon on 2023/7/8.
//

#import <Foundation/Foundation.h>
#import "Button.h"

typedef int (^Mysum)(int,int);

void test(){
    //定义里一个block, 返回int类型，接收两个int类型的参数
    int (^Sum)(int,int) = ^(int a, int b){
        return a + b;
    };
    
    int result = Sum(4,6);
    NSLog(@"%i",result);
}

void test2(){
    
    //__block 有两个下划线
   __block int c = 13;
    //声明里一个block
    Mysum sum2 = ^(int a, int b){
        //如果外面的变量使用__block关键字进行声明，那么就可以在block内部修改这个变量
        c = 11;
        //block 可以访问外面定义的变量
        NSLog(@"c is %i",c);
        return a + b;
    };
    
    NSLog(@"%i", sum2(3, 2));
}


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        Button *btn = [[Button alloc]init];
        test();
        test2();
        
        btn.block = ^(Button *btn){
            NSLog(@"按钮%@被点击了", btn);
        };
        
        btn.click;
    
       
    }
    return 0;
}
